﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using RegistroMascotas.Modelo;
using Service;

namespace RegistroMascotas2
{
    public partial class mascota_modificar : System.Web.UI.Page
    {
        Mascota _miMascota = null;

        protected void Page_Load(object sender, EventArgs e)
        {
            cuentacentro.Visible = true;
            cuentader.Visible = true;

            if (!IsPostBack)
            {
                cargarComboBox();
                cargarDatosDeMascota();
            }
        }

        protected void btnGuardarCambios_Click(object sender, EventArgs e)
        {
            _miMascota = (Mascota)Session["Mascota"];
            string estado = _miMascota.Estado;
            string cadenaImagen = _miMascota.Imagen;
            bool exito = false;

            try
            {

                if (ddlEstado.SelectedValue != estado)
                {
                    estado = ddlEstado.SelectedValue;
                }

                if (fuMiCuentaImagen.FileName != "" && fuMiCuentaImagen.FileName != null)
                {
                    if (Validaciones.validarSubidaDeImagen(fuMiCuentaImagen, lblError))
                    {
                        string pathTemporal = Server.MapPath("/temp/" + fuMiCuentaImagen.FileName);
                        fuMiCuentaImagen.SaveAs(pathTemporal);

                        if (cadenaImagen != Validaciones.convertirImagenToString(pathTemporal))
                        {
                            cadenaImagen = Validaciones.convertirImagenToString(pathTemporal);
                        }
                    }
                }

                exito = GestorMascota.modificarMascotaHechaPorDueño(_miMascota.IdMascota, estado, cadenaImagen);

                if (!exito)
                {
                    throw new Exception("No se pudo modificar los datos de la mascota " + _miMascota.Nombre);
                }
                else
                {
                    Session["Mascota"] = "";
                    Session["Mascota"] = GestorMascota.obtenerMascotaDetalle(_miMascota.IdMascota);
                    Response.Redirect("~/mascota.aspx");
                }
            }
            catch (Exception ex)
            {
                cuentacentro.Visible = false;
                cuentader.Visible = false;
                lblNotificacion.Text = ex.Message;
                lblNotificacion.CssClass = "errores";
            }
        }

        protected void btnVolver_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/mascota.aspx");
        }

        private void cargarComboBox()
        {
            ddlEstado.Items.Add(EstadoMascota.Con_Dueño.ToString());
            ddlEstado.Items.Add(EstadoMascota.En_Adopción.ToString());
            ddlEstado.Items.Add(EstadoMascota.Fallecido.ToString());
            ddlEstado.Items.Add(EstadoMascota.Perdido.ToString());
        }

        private void cargarDatosDeMascota()
        {
            string path = "";

            try
            {
                _miMascota = (Mascota)Session["Mascota"];

                datos_nombre.Text = _miMascota.Nombre;
                datos_apellido.Text = _miMascota.Apellido;
                datos_raza.Text = _miMascota.Raza;
                datos_sexo.Text = _miMascota.Sexo;

                if (_miMascota.PasoZoonosis)
                    datos_zoo.Text = "Si";
                else
                    datos_zoo.Text = "No";

                if (_miMascota.NombreZoonosis == null)
                    datos_cual.Text = "Ninguna";
                else
                    datos_cual.Text = _miMascota.NombreZoonosis;

                if (_miMascota.MotivoZoonosis == null)
                    datos_porque.Text = "Ninguno";
                else
                    datos_porque.Text = _miMascota.MotivoZoonosis;

                datos_perdida.Text = _miMascota.CantVecesPerdido.ToString();
                datos_salidas_pais.Text = _miMascota.CantSalidasPais.ToString();
                datos_salida_provincia.Text = _miMascota.CantSalidasProv.ToString();

                foreach (ListItem state in ddlEstado.Items)
                {
                    if (_miMascota.Estado == state.Text)
                        ddlEstado.SelectedValue = state.Text;

                }

                datos_caracteristicas.Text = _miMascota.Caracteristicas;

                if (_miMascota.Imagen != null)
                {
                    if (_miMascota.Imagen != String.Empty)
                    {
                        System.Drawing.Image img = Validaciones.StringToImage(_miMascota.Imagen);
                        path = "/temp/" + Guid.NewGuid() + ".jpg";
                        img.Save(Server.MapPath(path));

                        datos_foto.ImageUrl = path;
                    }
                    else
                    {
                        datos_foto.ImageUrl = "imgs/micuenta-imagen.png";
                    }
                }
                else
                {
                    datos_foto.ImageUrl = "imgs/micuenta-imagen.png";
                }
            }
            catch (Exception ex)
            {
                cuentacentro.Visible = false;
                cuentader.Visible = false;
                lblNotificacion.Text = ex.Message;
                lblNotificacion.CssClass = "errores";
            }
        }
    }
}